package leetcode;
/*
给定一个按非递减顺序排序的整数数组 A，返回每个数字的平方组成的新数组，要求也按非递减顺序排序。

 

示例 1：

输入：[-4,-1,0,3,10]
输出：[0,1,9,16,100]

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/squares-of-a-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

思路：
双指针指向最小的正数和负数，每次找到最小绝对值放入新数组
 */
public class Test0977 {
    public int[] sortedSquares(int[] A) {
        int i=-1,j=0;
        int[] res=new int[A.length];
        while (j<A.length && A[j]<0){
            ++j;
        }
        if(j>0){
            i=j-1;
        }
        for(int k=0;k<A.length;k++){
            int tmp=0;
            if(j>=A.length || (i>=0 && A[i]+A[j]>0)){
                tmp=A[i];
                i--;
            }
            else if(i<0  || A[i]+A[j]<=0){
                tmp=A[j];
                j++;
            }
            res[k]=tmp*tmp;
        }
        return res;
    }
}
